Marvin Allen Wolfthal,是Dell Services的顾问,他使用Netty实现了多个任务关键型的企业系统。
何品,目前是淘宝的一名资深软件工程师,热爱网络、并发、异步相关的主题以及函数式编程,同时也是Netty、Akka等项目的贡献者,活跃于Scala社区,目前也在从事GraphQL相关的开发工作。
- Netty之父”Trustin Lee作序推荐
- 阿里巴巴中间件高级技术专家为本书中文版作序推荐
- 系统而详细地介绍了Netty的各个方面并附带了即用型的优质示例
- 附带行业一线公司的案例研究
- 极实用的Netty技术书
无论是构建高性能的Web、游戏服务器、推送系统、RPC框架、消息中间件还是分布式大数据处理引擎,都离不开Netty,在整个行业中,Netty广泛而成功的应用,使其成为了Java高性能网络编程的卓绝框架。
Netty的现Tech Lead Norman在本书中循序渐进地讲解了Netty的各个关键部分,在看完本书后,你不但可以熟练地使用Netty来构建以上系统,并且还可以避免很多常见的陷阱。
无论是想要学习Spring 5 、Spark、Cassandra等这样的系统,还是通过学习Netty来构建自己的基于Java的高性能网络框架,或者是更加具体的高性能Web或者游戏服务器等,本书都将是你的超强拍档。
本书中文版基于Netty4.1.9做了修订,希望本书能够给你带来一个接近完美的阅读体验,并能帮到你。
前言
回首过去,我仍然不敢相信我做到了。
当我从2011年年末开始为Netty 做贡献时,我怎么也想不到我会写一本关于Netty 的书,并且成为该框架本身的核心开发者之一。
这一切都始于我在2009 年参与的Apache James 项目,一个在Apache 软件基金会下开发的基于Java 的邮件服务器。
像许多应用程序一样,Apache James 需要构建在一个坚实的网络抽象之上。在考察提供网络抽象的项目领域时,我偶然地发现了Netty,并且立即就爱上了它。在我从用户的角度更加地熟悉了Netty 之后,我便开始转向改进它和回馈社区。
尽管我第一次贡献的范围有限,但是很快变得明显的是,进行贡献以及和社区进行相关问题的讨论,尤其是和项目的创始人Trustin Lee,对于我的个人成长非常有益。这样的经验牢牢地吸引了我,我喜欢将我的空闲时间更多地投入到社区中。我在邮件列表上提供帮助,并且加入了IRC频道的讨论。致力于Netty 开始是一种爱好,但很快就演变成了一种激情。
我对Netty 的激情最终导致我在Red Hat 就业。这简直是美梦成真,因为Red Hat 雇佣我来致力于我所热爱的项目。我最终知道了Claus Ibsen 在那时正(现在仍然)致力于Apache Camel。Claus 和我认识到,虽然Netty 拥有坚实的用户基础以及良好的JavaDoc,但是它缺乏一个更加高级别的文档。Claus 是《Camel in Action》(Manning,2010)的作者,他给了我为Netty 写一本类似的书的想法。关于这个想法,我考虑了几个星期,最终接受了。这也就有了本书。
在编写本书的过程中,我也越来越多地参与到了社区中。伴随着超过1000 次的提交①,我最终成为了仅次于Trustin Lee 的最活跃的贡献者。我经常在世界各地的各种会议以及技术聚会上演讲Netty。最终Netty 开启了另一个在苹果公司的就业机会,我目前在云基础设施工程团队(Cloud Infrastructure Engineering Team)担任资深软件工程师。我继续致力于Netty,并且经常贡献回馈社区,同时也帮助推动该项目。
Norman Maurer
苹果公司云基础设施工程
我在马萨诸塞州韦斯顿的Harvard Pilgrim Health Care 担任Dell Services 的顾问时,就主要侧重于构建可复用的基础设施组件。我们的目标是找到这样一种扩展通用代码库的方式:它不仅对通常软件过程有利,而且还能将应用程序开发者从编写既麻烦又平凡的管道代码(plumbingcode)责任中解脱出来。
我一度发现,有两个相关的项目都在使用一个第三方的理赔处理系统,该系统只支持直接的CP/IP 通信。其中一个项目需要使用Java 重新实现一个文档不太详细的构建在供应商的专有的基于分隔的格式上的遗留COBAL 模块。这个模块最终被另一个项目取代了,那个项目将使用较新的基于XML的接口来连接到该相同理赔系统上。(但是使用的仍然是裸套接字,而不是SOAP!)在我看来,这是一个理想的开发一个通用API 的机会,而且也充满了乐趣。我知道将会有严格的吞吐量和可靠性要求,并且设计也仍然在不断地演进。显然,为了支持快速的迭代周期,底层的网络代码必须完全和业务逻辑解耦。
我对于Java 的高性能网络编程框架的调研把我直接带到了Netty 面前。(在第1 章开头读者会读到一个假设的项目,它其实基本上取材自现实生活。)我很快就确信了Netty 的方式,使用可动态配置的编码器和解码器,能够完美地满足我们的需求:两个项目将可以使用相同的API,并部署所使用的特定数据格式所需的处理器。在我发现该供应商的产品也是基于Netty 的之后,我变得更加坚信了!
就在那时,我得知有一本我一直都在期待的叫《Netty 实战》的书正在编写中。我读了早期的草稿,并带着一些问题和建议很快和Norman 取得了联系。在我们多次的交流过程中,我们常常会谈到要记住最终用户的视角,而且因为我当时正在参与一个实实在在的Netty 项目,所以我很高兴地担当了这个(合著者/最终用户)角色。
我希望,通过这种方式,我们能够成功地满足开发者们的需求。如果您有任何关于我们如何能够使得本书变得更加有用的建议,请在https://forums.manning.com/forums/netty-in-action 联系我们。
Marvin Allen Wolfthal
Dell Services